<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    //1. slice(startIndex,endIndex) 数组的裁切  [startIndex,endIndex)      
    // (通过指定起始下标和终止下标 裁切数组中的某一段元素)
    // startIndex 起始下标(默认值0)
    // endIndex   终止下标(默认值 被裁切的数组的长度 arr.length)
    // 返回值: 被裁切的元素形成的数组
    // 是否影响原数组: 不影响
    // 常用于 
    // 1. 分页功能  [0,60)  [60,120)
    // 2. 不传参  =>  得到一个与 原数组元素相同的新数组(数组的深复制)  
    //    可以帮助我们在不影响原数组的情况下 操作数组(先复制一份 在操作)
    // var arr = [1,1,1,1,1,2,2,2,2,3,3,3,3,3];
    // console.log(arr.slice(5,8));

    //2. concat()   可以将多个数组和元素拼接形成一个新数组  (数组的合并)
    // 注意:如果拼接的是一个数组,则将数组展开(遍历数组中的每个元素) 放到新数组中
    //      如果拼接的不是一个数组,则直接放到新数组中
    // 返回值: 拼接形成的新数组
    // 是否影响原数组  不影响
    // 拓展用法
    // 不传参  => 得到一个于原数组 元素相同的新数组(数组的复制)
    // var arr = [1, 2, 3];
    // var brr = ['a', 'b', 'c'];
    // var crr = ['A', 'B', 'C'];
    // console.log(arr.concat(brr,crr));


    // sort()   数组排序(官方提供的数组排序的方法)
    // 1. 字符排序   (按照ASCII码表的大小排序)
    // 2. 纯数字排序
        // 把函数当成参数传入到sort()方法中 => 规定如何排序
        // 该函数有两个形式参数 a,b  分别表示每次比较的前后两个元素 (用于指定排序的方式)
        // return a - b; 从小到大排列
        // return b - a; 从大到小排列

        // 返回值: 排序后的原数组
        // 是否影响原数组: 影响

    // var arr = [1, 4, 5, 1, 7, 's', 'a', 'g'];
    // console.log(arr.sort());
    
    var arr = [1, 4, 5, 1, 7];
    arr.sort(function(a,b){
        return a-b;
    })
    console.log(arr);

    // forEach()  数组的遍历
    // 遍历数组,每次循环时执行传入的回调函数(执行的操作)
    // 回调函数接收三个参数 item(循环当前的元素),index(当前下标),array(原数组)
    // 返回值:undefined

    // map()   数组的映射(迭代   => 根据原数组 生成新数组) 
    // 遍历数组,每次循环时执行传入的回调函数(执行的操作), 并接收回调函数的返回值,放到新数组中 最终返回
    // 返回值: 回调函数中的返回值 形成的新数组

    // filter()  数组的过滤/筛选 (把满足条件的元素 放到新数组中).
    // 遍历数组,每次循环时执行传入的回调函数(执行的操作), 回调函数返回(return)一个条件表达式,把满足条件的元素 放到新数组中
    // 返回值: 满足条件的元素 形成的数组

    // some()   判断数组中是否存在满足条件的元素.
    // 遍历数组,每次循环时执行传入的回调函数(执行的操作), 回调函数返回(return)一个条件表达式,只要有一个元素满足则返回true , 都不满足返回false 
    // 返回值: 布尔值

    // every()   判断数组中所有的元素是否都满足满足某个条件.
    // 遍历数组,每次循环时执行传入的回调函数(执行的操作), 回调函数返回(return)一个条件表达式,全都满足则返回true , 有一个不满足则返回false 
    // 返回值: 布尔值



    // 1.  尾部增加 
    // arr.push();

    // 2.  头部增加
    // arr.unshift();

    // 3.  尾部删除
    // arr.pop();

    // 4. 头部删除
    // arr.shift();

    // 5.任意地方 增，删，改
    // arr.splice(2,0,1);

    // 6. reverse() 数组的翻转(反转)

    // 7. indexOf()返回某个元素在数组中第一次出现的位置(下标),不存在返回-1

    // 8. includes() (ES6新增)用于判断数组中是否存在某个元素  
    //     返回值 存在=> true  不存在=>false 
    
    // 9. join(char) 用特定的字符将数组拼接形成字符串

    // 10. slice(startIndex,endIndex) 数组的裁切

    // 11. concat()   可以将多个数组和元素拼接形成一个新数组  (数组的合并)

    // 12. sort()   数组排序(官方提供的数组排序的方法)
    //     字符排序   (按照ASCII码表的大小排序)
    //     纯数字排序
</script>

</html>